1. Field of the Invention
This invention relates generally to digital filtering and particularly to a ROM filter which requires less memory capacity than conventional ROM filters.
2. Description of the Prior Art
In many applications it is necessary to filter an electrical signal to remove unwanted frequencies. For example, in digital communications, before the outgoing digital data modulates the carrier, a low-pass filter is used to shape the data to conform to the spectral shaping requirements of the system. For example, FIG. 1 illustrates a block diagram of the transmit section of a cordless telephone. The voice signal is amplified and sent to a voice coder, where it is converted into digital form. It is then passed through control logic, which operates in conjunction with a microprocessor to handle all timing critical tasks as well as data buffering, data coding/decoding, data compression, and other digital processing steps. The microprocessor controls the user interface, i.e., keyboard control, display driver, call set-up protocol. The output of the control logic is typically a string of binary data pulses such as are illustrated in FIG. 2. These pulses have a bit duration of T.sub.b and a frequency f.sub.b =1/T.sub.b, as illustrated in FIG. 2. The pulses illustrated in FIG. 2 are so-called non-return-to-zero (NRZ) bits in which a binary 1 is represented by a positive voltage and a binary 0 is represented by an equal negative voltage. As is known, data bits can either be in the form of NRZ pulses or return-to-zero (RZ) pulses, the difference being in the cycle of the positive voltage. In an NRZ system the duty cycle of the positive voltage is 100%, while in an RZ system the duty cycle of the positive voltage is 50%. In both systems, the duty cycle of the negative voltage is typically 100%.
The pulses illustrated in FIG. 2 can be illustrated in the frequency domain in the manner shown in FIG. 3, wherein the ordinate is the power transmitted at a given frequency. Most of the power lies in the region from 0 Hz (DC) to f.sub.b, the remaining power being in a series of lobes that are attributable to harmonics of the frequencies in the region below f.sub.b. The curve touches the horizontal axis at f.sub.b, 2f.sub.b, 3f.sub.b, etc. Typically, for NRZ data the lobe between f.sub.b and 2f.sub.b has a maximum which is 13 db below the maximum of the main lobe, and the lobe between 2f.sub.b and 3f.sub.b has a maximum 9 db below the maximum of the second lobe.
It is desirable to filter out a large portion of the higher frequencies since, if they are not filtered, they can interfere with voice or data communication on adjacent channels. According to Nyquist's minimum-bandwidth theorem, the responses to rectangular data pulses can be observed independently (i.e., without intersymbol interference) if they are passed through a low-pass filter having a cutoff frequency f.sub.N =f.sub.b/2, along with an (x/sinx)-shaped amplitude equalizer.
One conventional technique of accomplishing this is to use an L-C filter to filter out the unwanted frequencies. Another known method is to use a read-only memory (ROM) filter, which is programmed to store information which in essence simulates the response of a conventional L-C filter. L-C filters operate in the analog domain, whereas ROM filters operate in the digital domain.
FIGS. 4A-4C illustrate the manner in which a ROM filter is programmed. Curve R.sub.1 in FIG. 4A approximates the response of an L-C filter to the positive-going data pulse illustrated above. Similarly, in FIG. 4B, curve R.sub.o approximates the response of an L-C filter to a negative-going data pulse. Curves R.sub.0 and R.sub.1 are referred to as "pulse response curves" and in FIGS. 4A and 4B they extend over a time equal to 6T.sub.b. In a ROM filter, data is stored which corresponds to the values of curves R.sub.0 and R.sub.1 at given intervals.
FIG. 4C illustrates how a series of bits 101 would interfere with each other after being passed through an L-C filter. As is apparent, the output of the filter, at any given time, is the summation of three pulse response curves, 41P, 42P and 43P displaced by a time T.sub.b. The pulse response curve 41P (which duplicates curve R.sub.1) results from the "1" bit designated 41; the pulse response curve 42P (which duplicates curve R.sub.0) results from the "0" bit designated 42; and the pulse response curve 43P (which duplicates curve R.sub.1) results from the "1" bit designated 43. As will be apparent from an examination of FIG. 4C, the summation of the three pulse response curves in each separate T.sub.b interval is in reality a summation of segments of curves R.sub.0 and R.sub.1 illustrated in FIGS. 4A and 4B. For example, in the interval 0-1Tb, curve 43P is the only curve present, and the summation is therefore simply the segment of pulse response curve R.sub.1 in the interval 0-1T.sub.b. In the interval 1T.sub.b -2T.sub.b, curve R.sub.1 in the interval T.sub.b -2T.sub.b is added to curve R.sub.0 in the interval 0-T.sub.b. In the interval 2T.sub.b -3T.sub.b, the segments of curve R.sub.1 in the intervals 0-T.sub.b and 2T.sub.b -3T.sub.b are added to the segment of curve R.sub.0 in the interval T.sub.b -2T.sub.b. Similarly, for each T.sub.b interval, the summation of curves 41P-43P is equal to a summation of pulse response curves R.sub.0 and R.sub.1 in specified time intervals. To simplify the drawing, FIG. 4C illustrates the pulse response curves for only three bits. In reality, the pulse response curves for six data bits would be summed (assuming the length of the pulse response curve=6T.sub.b). Thus, the summation of the curves in any T.sub.b interval represents the addition of six segments of curves R.sub.0 and R.sub.1, and, depending on the particular sequence of data bits, there are 64 possible summation curves during any T.sub.b interval.
FIG. 5 illustrates how the pulse response curves of FIGS. 4A and 4B can be digitized by selecting a specified number of points within each interval T.sub.b. In FIG. 5, each T.sub.b interval is broken into four data points, so that each of the pulse response curves R.sub.0 and R.sub.1 is defined by a total of 24 data points. Since curves R.sub.0 and R.sub.1 are mirror images of each other, each data point can be represented by a value A.sub.n or its opposite -A.sub.n. With four data points during each T.sub.b interval, the values of curve R.sub.1 may be represented as A.sub.1 to A.sub.24 and the values of curve R.sub.0 may be represented as --A.sub.1 to -A.sub.24.
FIG. 6 illustrates a simplified block diagram of a conventional ROM filter. ROM filter 60 includes a 6-bit register 61, into which the transmit data are shifted. The outputs of the six stages of register 61 are read into a read-only memory (ROM) 62. ROM 62 includes a plurality of groups of memory locations, which are designated by the numerals 601, 602, . . . , 664. Each of memory groups 601-664 includes four locations, for example, 602A, 602B, 602C and 602D. ROM 62 is pulsed by an oversample clock generator 63, and the output of ROM 62 is passed through a digital-to-analog converter (DAC) 64. A low-pass filter 65 is connected at the output of DAC 64.
The data stream is shifted into register 61 at a rate of f.sub.b =1/T.sub.b. The clock rate for of oversample clock generator 63 is equal to 4f.sub.b. The contents of register 61 together form a 6-bit address identifying one of memory groups 601-664, the individual locations of which (e.g., 602A-602D) are programmed with values which represent the summation of data points on the curves shown in FIG. 5.
An example will assist in explaining how memory groups 601-664 are programmed. Assume that the 6-bit address 100101 has just been shifted into register 61. This means that the latest bit shifted into register 61 was a "1". During the following T.sub.b interval, the portion of the pulse response curve attributable to this binary "1" may be represented by the values A.sub.1, A.sub.2, A.sub.3 and A.sub.4 in FIG. 5 Since the preceding bit was a "0" the digital values representing the portion of the pulse response curve attributable to this bit are represented by the values, -A.sub.5, -A.sub.6, -A.sub.7 and -A.sub.8. The values represented by the next preceding binary "0" are represented by -A.sub.9, -A.sub.10, -A.sub.11 and -A.sub.12. For the next preceding binary "1" the values would be A.sub.13, A.sub.14, A.sub.15 and A.sub.16. The same process would be followed for the remaining two bits.
As noted above, oversample clock generator 63 pulses at a rate equal to 4f.sub.b. The four locations in each of memory groups 601-664 are programmed with four values which define the curve obtained by summing data points on curves R.sub.0 and R.sub.1. Assume for example, the 6-bit address 100101 shown in FIG. 6 identifies memory group 602. Memory location 602A therefore contains the values: EQU A.sub.1 -A.sub.5 -A.sub.9 +A.sub.13 -A.sub.17 +A.sub.21
Locations 602B, 602C and 602D contain the following values: EQU 602B: A.sub.2 -A.sub.6 -A.sub.10 +A.sub.14 -A.sub.18 +A.sub.22 EQU 602C: A.sub.3 -A.sub.7 -A.sub.11 +A.sub.15 -A.sub.19 +A.sub.23 EQU 602D: A.sub.4 -A.sub.8 -A.sub.12 +A.sub.16 -A.sub.20 +A.sub.24
Similarly, each of the remaining memory groups 601-664 is programmed to contain a sequence of four values corresponding to a particular combination of bits in register 61.
After oversample clock generator 63 pulses through the four summations represented by the values programmed in each memory location, the next bit is shifted into register 61, and the process is repeated. The sequence of digital values read out of ROM 62 is converted into analog form in DAC 64. The analog output of DAC 64 is smoothed in low pass filter 65.
The number of bits required in ROM 62 can be expressed by the following formula: EQU S.sup.n .times..DELTA..times.D
where S is the number of symbol states of the data (e.g., two for binary data), n is the number of pulse responses that are interfering with one another (i.e., the number of stages in register 61), .DELTA. is the number of oversample clock pulses for each data bit (f.sub.ov /f.sub.b), and D is the number of bits in the word delivered to DAC 64. For example, if DAC 64 receives 8-bit words, the number of bits required for ROM 62 is: EQU 2.sup.6 .times.4.times.8=2,048 bits
With present technology, such a ROM would have an area on the order of 600 square mils. This is a manageable size. However, ROM size can become a significant problem when data systems having more than two symbol states are used. For example, if a system with five symbol states is used, the above expression becomes 5.sup.6 .times.4.times.8, or 500,000 bits. The area required for such a ROM is over 17,000 square mils.
Thus there is a real need for a filter having a reduced ROM size, particularly when data having three or more symbol states are being filtered.